Versi 1
| Field | Isi |
|---|---|
| Dokumen ID | VBS-PBL-007 |
| Deskripsi | Permintaan pembelian barang (Purchase Request) dari cabang / department, persetujuan per barang, dan proses PR yang disetujui menjadi Purchase Order |
| Nomor Revisi | 1 |
| Tanggal | 2026-10-04 |
| Keterangan | Dokumentasi baseline dari dokumentasi fitur demo dan kode FE |
1. Ringkasan
a. In scope
- User melihat daftar Purchase Request (tanggal, nomor invoice, lokasi, cabang, department, status Selesai / Perlu Approval).
- User memfilter daftar berdasarkan tanggal, lokasi, cabang, dan department.
- User membuat Purchase Request dengan cabang, lokasi, department, dan baris barang (barang, SKU, satuan, qty, keterangan).
- User menyimpan PR sebagai draft (perlu approval) atau final.
- Approver menyetujui atau menolak tiap barang PR beserta qty yang disetujui.
- User membuat Purchase Order atas PR yang memiliki barang disetujui.
- User meninjau daftar PR yang akan diproses menjadi PO pada halaman Proses Purchase Request ke Purchase Order.
b. Catatan
c. Kesimpulan
- [FE] -
- [BE] -
2. Functional Requirement
| Kode | Deskripsi |
|---|---|
| FR-01 | Sistem menampilkan daftar PR dengan department, cabang, lokasi, dan status |
| FR-02 | User dapat memfilter daftar PR |
| FR-03 | User dapat membuat PR dengan rincian barang |
| FR-04 | User dapat menyimpan PR sebagai draft atau final |
| FR-05 | User dapat melihat detail PR |
| FR-06 | Approver dapat menyetujui / menolak barang PR dengan qty disetujui |
| FR-07 | User dapat membuat PO atas PR yang memiliki barang disetujui |
| FR-08 | User dapat meninjau PR yang akan diproses menjadi PO |
3. Use Case List
| Kode | Deskripsi |
|---|---|
| UC-01 | Melihat daftar purchase request |
| UC-02 | Memfilter daftar purchase request |
| UC-03 | Membuat purchase request |
| UC-04 | Melihat detail purchase request |
| UC-05 | Menyetujui atau menolak barang purchase request |
| UC-06 | Membuat purchase order atas purchase request |
| UC-07 | Meninjau PR yang akan diproses menjadi PO |
4. Use Case Scenario
UC-01 : Melihat daftar purchase request
| Aktor | User dengan hak #purchase-request |
| Deskripsi | User melihat daftar PR |
| Prekondisi | User sudah login Brand aktif |
| Alur utama | 1. User membuka halaman Purchase Request. 2. Sistem menampilkan daftar PR dengan department, cabang, lokasi, dan status. 3. User klik baris untuk membuka detail. |
| Alur negatif | - Jika daftar kosong tanpa filter, muncul "Daftar Invoice masih kosong". - Jika daftar kosong dengan filter, muncul "Invoice Tidak Ditemukan". |
| Bisnis rule | - Menu Purchase Request tidak aktif di menu default, halaman diakses lewat route. - User tanpa hak #purchase-request all hanya melihat PR miliknya.- Kolom lokasi hanya tampil jika brand memiliki fitur lokasi. - Status: Selesai jika sudah final, Perlu Approval jika belum. |
| Postkondisi | Daftar PR tampil |
| Trigger | User membuka halaman Purchase Request |
| Kode FR | FR-01 |
UC-02 : Memfilter daftar purchase request
| Aktor | User dengan hak #purchase-request |
| Deskripsi | User mempersempit daftar PR |
| Prekondisi | User berada di halaman daftar |
| Alur utama | 1. User mencari nomor invoice. 2. User membuka Filter dan mengisi tanggal, lokasi, cabang, dan/atau department. 3. Sistem memuat ulang daftar. |
| Alur negatif | - Jika tidak ada data, muncul "Invoice Tidak Ditemukan". - Reset mengosongkan filter. |
| Bisnis rule | - Filter lokasi hanya tampil jika brand memiliki fitur lokasi. |
| Postkondisi | Daftar terfilter |
| Trigger | User mengubah filter |
| Kode FR | FR-02 |
UC-03 : Membuat purchase request
| Aktor | User dengan hak #purchase-request basic |
| Deskripsi | User mengajukan permintaan pembelian barang |
| Prekondisi | Barang terdaftar di master barang |
| Alur utama | 1. User klik Buat Invoice. 2. User mengisi tanggal, cabang, lokasi, dan department. 3. User menambah baris barang (barang, satuan, qty, keterangan). 4. User memilih Simpan Draft atau Simpan Final, lalu mengonfirmasi. 5. Sistem menyimpan PR dan menampilkan "Berhasil buat Purchase Request". |
| Alur negatif | - Jika form belum lengkap, muncul "Tolong lengkapi form dengan benar!". - Jika rincian belum lengkap, muncul "Tolong lengkapi rincian dengan benar!". - Jika cabang kosong, muncul "Tolong lengkapi gudang form dengan benar!" / "Tolong lengkapi gudang rincian dengan benar!". |
| Bisnis rule | - Cabang per baris dipakai bila brand multi gudang. - Untuk brand tertentu department diisi otomatis. |
| Postkondisi | PR tersimpan |
| Trigger | User klik Simpan |
| Kode FR | FR-03 FR-04 |
UC-04 : Melihat detail purchase request
| Aktor | User dengan hak #pr view |
| Deskripsi | User melihat informasi dan barang PR |
| Prekondisi | PR tersedia |
| Alur utama | 1. User klik PR di daftar atau memilih Lihat. 2. Sistem menampilkan informasi nota dan daftar barang dengan status approval. |
| Alur negatif | - Jika PR tidak ditemukan, detail tidak tampil. |
| Bisnis rule | - Menu tindakan pada detail: Approval PR (draft), Hapus (draft), Buat PO Atas PR (final dengan barang disetujui). |
| Postkondisi | Detail PR tampil |
| Trigger | User membuka detail PR |
| Kode FR | FR-05 |
UC-05 : Menyetujui atau menolak barang purchase request
| Aktor | Approver dengan hak #pr basic |
| Deskripsi | Approver memutuskan tiap barang PR disetujui atau ditolak |
| Prekondisi | PR berstatus belum selesai dan belum final |
| Alur utama | 1. Approver memilih Approval PR. 2. Sistem menampilkan barang dengan qty requested. 3. Approver memilih Approve / Decline per barang atau sekaligus, dan mengisi qty approved. 4. Approver klik Simpan. 5. Sistem menyimpan approval dan menampilkan "Berhasil Buat Approval". |
| Alur negatif | - Jika qty approved melebihi qty requested, muncul "Qty tidak boleh lebih dari qty requested ...". - Jika qty approved 0 untuk barang disetujui, muncul "Qty harus lebih dari 0". - Jika masih ada barang pending, muncul "Masih ada barang yang belum di-approve atau di-decline". - Jika gagal, muncul "Gagal Buat Approval". |
| Bisnis rule | - Status approval barang: pending, approved, declined. - Barang declined memiliki qty approved 0. - Approve tanpa qty memakai qty requested. - Setelah approval, PR menjadi Selesai (final). |
| Postkondisi | Status approval barang tersimpan |
| Trigger | Approver klik Simpan pada modal approval |
| Kode FR | FR-06 |
UC-06 : Membuat purchase order atas purchase request
| Aktor | User dengan hak #po basic |
| Deskripsi | User memproses PR yang disetujui menjadi PO |
| Prekondisi | PR final, status belum selesai, dan minimal satu barang approved |
| Alur utama | 1. User memilih Buat PO Atas PR dari daftar atau detail PR. 2. Sistem membuka form PO dengan PR terpilih. 3. Sistem mengisi cabang, lokasi, dan barang dari PR. 4. User memilih supplier, melengkapi harga, lalu menyimpan PO final. 5. Sistem membuat PO yang terhubung ke PR. |
| Alur negatif | - Jika PR tidak ditemukan, muncul "Invoice PR yang anda cari tidak ditemukan!". - Validasi PO lainnya mengikuti pembuatan PO. |
| Bisnis rule | - Menu hanya muncul jika ada barang approved. - PO final dari PR memakai jalur PO dengan PR, sedangkan draft memakai jalur tanpa PR. - Setiap baris PO membawa id baris PR dan id invoice PR. |
| Postkondisi | PO terbentuk dari PR |
| Trigger | User klik Buat PO Atas PR |
| Kode FR | FR-07 |
UC-07 : Meninjau PR yang akan diproses menjadi PO
| Aktor | User brand |
| Deskripsi | User melihat ringkasan PR (approval, status, department, cabang) pada halaman proses PR ke PO |
| Prekondisi | User membuka route proses PR ke PO |
| Alur utama | 1. User membuka halaman Proses Purchase Request ke Purchase Order. 2. Sistem menampilkan tabel nomor invoice, approval status, status, department, dan cabang. 3. User klik Proses Semua Purchase Request untuk membuka panel proses. |
| Alur negatif | - |
| Bisnis rule | - Halaman ini hanya tampilan review, tidak menyimpan PO sendiri. - Pembuatan PO nyata dilakukan melalui UC-06. |
| Postkondisi | Daftar PR untuk diproses tampil |
| Trigger | User membuka halaman proses PR ke PO |
| Kode FR | FR-08 |
5. Data Flow Diagram
DFD-01 — Alur purchase request ke purchase order
6. Sequence Diagram
SD-01 — UC-01 : Melihat daftar purchase request
SD-02 — UC-02 : Memfilter daftar purchase request
SD-03 — UC-03 : Membuat purchase request
SD-04 — UC-04 : Melihat detail purchase request
SD-05 — UC-05 : Menyetujui atau menolak barang purchase request
SD-06 — UC-06 : Membuat purchase order atas purchase request
SD-07 — UC-07 : Meninjau PR yang akan diproses menjadi PO
7. Table Schema
8. API Schema
| Endpoint | Status | Perubahan |
|---|---|---|
GET /invoice-purchase-request | existing | - |
GET /invoice-purchase-request/:id | existing | - |
POST /purchase-request | existing | - |
POST /purchase-request/update-approval | existing | - |
POST /invoice-purchase-order/with-pr | existing | - |